/**
 * @Author: zxc
 * @Date: 2020-11-12 14:23:38
 * @func 罗马数字转整数
 */
/**
 * @param {string} s
 * @return {number}
 */
// var romanToInt = function (s) {
//   let map = {
//     I: 1,
//     V: 5,
//     X: 10,
//     L: 50,
//     C: 100,
//     D: 500,
//     M: 1000
//   }
//   let sum = 0,
//     idx = 0,
//     temp = 0,
//     now = 0
//   while (idx < s.length) {
//     now = map[s[idx]]
//     if (temp < now) {
//       sum = sum - temp
//     } else {
//       sum = sum + temp
//     }
//     temp = now
//     idx++
//   }
//   return sum + temp
// }

var romanToInt = function (s) {
  let map = {
    I: 1,
    V: 5,
    X: 10,
    L: 50,
    C: 100,
    D: 500,
    M: 1000
  }
  let res = 0,
    idx = 0,
    current,
    next
  while (idx < s.length) {
    current = map[s[idx]]
    next = map[s[idx + 1]] || 0
    current < next ? (res -= current) : (res += current)
    idx++
  }

  return res
}

// var romanToInt = function (s) {
//   let codeArr = [
//       "M",
//       "CM",
//       "D",
//       "CD",
//       "C",
//       "XC",
//       "L",
//       "XL",
//       "X",
//       "IX",
//       "V",
//       "IV",
//       "I"
//     ],
//     keyArr = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],
//     res = 0,
//     idx
//   while (s.length) {
//     idx = codeArr.indexOf(s[0] + s[1])
//     if (idx > 0) s = s.slice(2, s.length)
//     else {
//       idx = keys.indexOf(s[0])
//       s = s.slice(1, s.length)
//     }
//     res += keyArr[idx]
//   }
//   return res

// }
